﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ExaminationTT.Model;
using ExaminationTT.Rule;

namespace ExaminationTT.Algorithms
{
    
    public interface IAlgorithm 
    {
        string Description { get; } 
        void SetCUnits(IEnumerable<ICUnit> cunits);
        void SetRules(IEnumerable<IRule> rules);
        void SetScheduledExams(IEnumerable<IExam> exams);
        void SetUnScheduledExams(IEnumerable<IExam> exams);
        void SetPossibleHours(IEnumerable<DateTime> hours); //so são consideradas as horas
        void SetPossibleWeekDays(IEnumerable<DayOfWeek> weekDays);
        void SetSemesters(IEnumerable<ISemester> semesters);
        void SetSeasons(IEnumerable<IExamSeason> seasons);
      
        IEnumerable<IExam> Run();
    }
}
